package peace.gui.dnd
{
import flash.display.Sprite;
import flash.geom.Point;
/**
* Получили DragItem
*/
[Event(name="addedItem", type="peace.gui.dnd.HotAreaEvent")] 
/**
* Потеряли DragItem
*/
[Event(name="removedItem", type="peace.gui.dnd.HotAreaEvent")] 
/**
 * Горячая область для DragItems
 * 
 */
public class HotArea extends Sprite
{
	/**
	 * 
	 */
	protected const items:Array = [];
	/**
	 * 
	 * @param i
	 * 
	 */
	public function add (i:DragItem):void
	{		
		items.push(i);
		i.currentArea = this;
		placeItem(i);
		
		dispatchEvent(new HotAreaEvent(HotAreaEvent.ADDED_ITEM, i));
	}
	/**
	 * 
	 * @param i
	 * @return 
	 * 
	 */	
	public function remove (i:DragItem):DragItem
	{
		var index:int = items.indexOf(i);
		if (index > -1)
		{
			items.splice(index, 1);
			i.currentArea = null;
			
			dispatchEvent(new HotAreaEvent(HotAreaEvent.REMOVED_ITEM, i));
		}
		return i;
	}
	/**
	 * Логика расположения Драгайтема в области
	 * 
	 * @param di
	 * 
	 */	
	public function placeItem (i:DragItem):void
	{
		// по умолчанию в верхний левый угол
		if (parent == i.parent)
		{
			i.x = x; i.y = y;
		}
		else
		{
			var areapos:Point = localToGlobal(new Point());
			var itempos:Point = i.parent.globalToLocal(areapos);
			i.x = itempos.x;
			i.y = itempos.y;
		}
	}
}

}